import numpy as np
import cv2 as cv

# -------------------ORB特征提取------------------------

img = cv.imread('2.jpg')

# 创建ORB对象
orb = cv.ORB_create(nfeatures=1000)  # 设定特征点数目为1000

# 计算图像的关键点和描述符
kp, des = orb.detectAndCompute(img, None)

# 绘制关键点
img2 = cv.drawKeypoints(img, kp, None, color=(0, 255, 0), flags=0)
# 参数说明：输入图像、关键点、输出图像、颜色、绘制类型。
# flags：
# flags（可选，默认值为0）：
        # cv2.DRAW_MATCHES_FLAGS_DEFAULT（默认）：
        # 仅绘制关键点位置（小圆圈），忽略方向和大小。
        # cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS：
        # 绘制带方向和大小的关键点（圆圈大小反映size，箭头表示angle）。
        # cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG：
        # 直接在输出图像上绘制，不清除原有内容。

cv.imshow('img', img2)
cv.waitKey(0)
cv.destroyAllWindows()

